<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
   <script>
        // es6定义变量 

        // 新增了两个关键字 
        // let 变量
        // const 常量


        // let const  和 var 区别?

        // 预解析  
        // var 关键字  会预解析  
        // let const 没有预解析 , 必须先声明后使用 

        // 重复名字  
        //  var 定义的变量 可以重名  
        // let const 定义的不允许重名  


        // 块级作用域
        // var 没有块级作用域 只有函数才可以限定它的活动范围

        // let 和 const  有块级作用域  任何一个 可执行代码的 {} 都是限定它的适用范围 


        // let 和 const的区别?

        // let 变量  const 常量  
        //  变量值可变  
        // let 定义的变量可以修改值 
        // const 定义的变量不可以修改值 
        //  初始化赋值   
        // let 定义的时候可以不赋值 
        // const 要求定的时候必须赋值  一经赋值 不允许修改


        //--------------

        // 预解析

        // console.log(num); // undefined
        // var num = 100;
        // console.log(num); // 100 

        // console.log(num); // 报错 必须先声明才能用
        // let num = 100;
        // console.log(num); // 

        // let num = 100;
        // console.log(num);

        // console.log(num); // 报错 必须先声明才能用
        // const num = 100;
        // console.log(num); // 


        // 重名 

        // var num = 100;
        // var num = 200;
        // console.log(num); // 200 允许重名 只不过后边把前面覆盖掉了
        // let num = 100;
        // let num = 200;
        // console.log(num); //直接报错  不允许重名

        // const num = 100;
        // const num = 200;
        // console.log(num); // 直接报错  不允许重名

        // 块级作用域 

        // if(true){
        //     var num = 100
        // }
        // //var 的  if for while do while switch {} 都是全局作用域 
        // console.log(num);

        // if(true){
        //     let num = 100
        // }
        // console.log(num); // num is not defined

        // if(true){
        //     const num = 100
        // }
        // console.log(num); // num is not defined





        // let 和const 的区别?


        // let num = 100;
        // num = 200;

        // console.log(num); // 200

        // const num = 100;
        // num = 200;

        // console.log(num); // 报错   不允许修改 const 定义的变量的值 



        // 区别2:

        // let num;
        // console.log(num);// undefined

        // const num;
        // console.log(num);// 报错 const 声明的时候 必须赋值  

   </script> 
</body>
</html>